package Test;

import java.util.Arrays;

public class StudentTest {

	public static void main(String[] args) {
		/*	对象数组题目：
		   定义类Student，包含三个属性：学号number(int)，年级state(int)，成绩
		   score(int)。 创建20个学生对象，学号为1到20，年级和成绩都由随机数确定。
		    问题一：打印出3年级(state值为3）的学生信息。
		    问题二：使用冒泡排序按学生成绩排序，并遍历所有学生信息

		提示：
		     1) 生成随机数：Math.random()，返回值类型double; 
		     2) 四舍五入取整：Math.round(double d)，返回值类型long。*/

		//思路：创建二维数组 一共20个一维数组，每个一维数组共有3个元素
		int[][] Student = new int[20][3];
		
		//利用for循环给每个元素赋值
		for (int i = 0; i < Student.length; i++) {
			//生成20个一维数组
			Student stu = new Student();
			stu.number = i + 1;
			stu.state = (int)(Math.random()*6+1);
			stu.score = (int)(Math.random()*101);
			
			int j = 0;
			//给每个一维数组元素赋值
			Student[i][j] = stu.number;
			Student[i][j+1] = stu.state;
			Student[i][j+2] = stu.score;	
			
			// 打印年级是3的学生信息
			if(Student[i][j+1] == 3){
				System.out.print("学号:" + stu.number + " 学生年级" + stu.state + " 学生成绩：" + stu.score + "\n" );
			}
		}
		
		//冒泡排序
		//外层for循环是比较的轮次
		for(int i = 0; i < Student.length; i++){
			//内层for循环是每轮次的次数 
			for(int j = 0; j < Student.length - 1 - i; j++){
				
				//临时数组 数组两两交换使用
				int[] temp;
				//比较成绩大小，前者成绩大  所在数组跟后者交换 内存地址
				if(Student[j][2] > Student[j+1][2]){
					temp = Student[j];
					Student[j] = Student[j + 1];
					Student[j + 1] = temp;
					
				}
			}		
			
		}
		
		
		//遍历二维数组
		System.out.println("学号" + "\t" + "年级" + "\t" + "成绩");
		for(int i = 0; i < Student.length; i++){
			
			for(int j = 0; j < Student[i].length; j++){
				System.out.print(Student[i][j] + "\t");
			}
			System.out.println();
		}
			
			
	}

}
